package com.hspedu.interface_.extendsVsinterface;

/**
 * @Author Stringzhua
 * @Date 2024/3/6 13:44
 * description:
 * 小结:
 * 继承是一种当子类继承了父类,就自动的拥有了父类的功能
 * 如果子类需要扩展功能,可以通过实现接口的方式来扩展
 * 可以理解成实现接口是对java单继承机制的补充
 */
public class EnterfaceVsInterface {
    public static void main(String[] args) {
        LittleMonkey littleMonkey = new LittleMonkey("悟空");
        littleMonkey.climbing();

        //假如悟空想学会飞和游泳-->但是又想拥有能力 【interface】
        littleMonkey.swiming();
        littleMonkey.fly();
    }
}

//猴子
class Monkey{
    private String name;

    public Monkey(String name) {
        this.name = name;
    }

    public void climbing(){
        System.out.println(name+"  会爬树...");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

//继承
class LittleMonkey extends Monkey implements Fishable,Bird{
    public LittleMonkey(String name) {
        super(name);
    }

    @Override
    public void swiming() {
        System.out.println(getName()+" 通过学习可以像鱼儿一样游泳");
    }

    @Override
    public void fly() {
        System.out.println(getName()+" 通过学习可以像鸟儿一样飞翔");
    }
}

//提供接口
interface Fishable{
    void swiming();
}

interface Bird{
    void fly();
}
